package cn.lls.entity.sys;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;

import java.io.Serializable;

/**
 * <p>
 * 
 * </p>
 *
 * @author 划水艺术家
 * @since 2022-11-15
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("lls_permission")
public class PermissionEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 权限Id，主键
     */
    @TableId(value = "permission_id", type = IdType.AUTO)
    @ApiModelProperty("权限Id，主键")
    private Integer permissionId;


    /**
     * 权限类型 0：目录 1：菜单 2：按钮
     */
    @Range(min = 0, max = 2, message = "权限类型 0：目录 1：菜单 2：按钮")
    @ApiModelProperty("权限类型 0：目录 1：菜单 2：按钮")
    private Integer permissionType;

    /**
     * 父权限Id
     */
    @ApiModelProperty("父权限Id")
    private Integer parentId;

    /**
     * 权限名，对应于功能
     */
    @ApiModelProperty("权限名，对应于功能")
    @Length(min = 1, max = 50, message = "权限名请控制在1-50字以内")
    private String permissionName;

    /**
     * 权限url
     */
    @ApiModelProperty("权限url")
    @Length(min = 1, max = 200, message = "权限url请控制在1-200字以内")
    private String url;

    /**
     * 菜单图标
     */
    @ApiModelProperty("菜单图标")
//    @Length(min = 1, max = 50, message = "权限图标请控制在1-50字以内")
    private String icon;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Integer orderNum;

    /**
     * 适用范围 0超级管理员 1公司管理员 2公司职员
     */
    private Integer apply;

    /**
     * 当适用范围为 2时，该功能是否为默认分必须分配（如查看密码、查看公告等） ; 为1代表是
     */
    private Integer defaultMust;


    /*----------------------------------------新增*/
    /*
        组件路径
     */
    private String component;

    /*
    重定向
     */
    private String redirect;

    /*
    是否隐藏
     */
    private Integer hidden;

    /**
     * 逻辑删除 1删除 0未删除
     */
    @TableLogic
    @ApiModelProperty("逻辑删除 1删除 0未删除")
    private Integer isDeleted;


}
